package icu.cqcai.xinsi.service;

import icu.cqcai.xinsi.domain.User;
import icu.cqcai.xinsi.domain.dto.UserLoginRequest;
import icu.cqcai.xinsi.domain.dto.UserLoginResponse;
import icu.cqcai.xinsi.domain.dto.UserRegisterRequest;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     * @param registerRequest 注册请求
     * @return 注册结果消息
     */
    String register(UserRegisterRequest registerRequest);
    
    /**
     * 用户登录
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    UserLoginResponse login(UserLoginRequest loginRequest);
    
    /**
     * 根据用户名查找用户
     * @param username 用户名
     * @return 用户对象，如果不存在返回null
     */
    User findByUsername(String username);
    
    /**
     * 检查用户名是否已存在
     * @param username 用户名
     * @return 是否存在
     */
    boolean isUsernameExists(String username);
    
    /**
     * 检查邮箱是否已存在
     * @param email 邮箱
     * @return 是否存在
     */
    boolean isEmailExists(String email);
    
    /**
     * 验证JWT token是否有效
     * @param token JWT token
     * @return 是否有效
     */
    boolean validateToken(String token);
    
    /**
     * 从JWT token中获取用户名
     * @param token JWT token
     * @return 用户名
     */
    String getUsernameFromToken(String token);
}
